An important aspect of Operations, Administration, and Maintenance (OA&M) of telecommunication systems, is provisioning of services. Services are referenced by identifiers, and provisioning details for each service are stored in databases, for access by a Network Management System (NMS). Identifiers are used for: communications interfaces; and services, such as policies, tunnels, label-switched paths (LSP), etc. Point-to-multipoint LSPs in packet switching telecommunications systems typically have identifier (ID) ranges of 1 to 1024 per network node or network element (NE), and identifier ranges could be much larger, such as for example, 65,000 or more. Some tables can even have millions of records.
Typically, in order to provision a new service in a telecommunication system, an operator needs to select an available or unused identifier from a range of identifiers, in order to reference the new service. This is typically done using database query such as a Structured Query Language (SQL) query to a service table located on a database, for an available identifier.
For initial provisioning of services, identifiers can be selected sequentially. Bulk provisioning is often carried out to assign services in blocks, for example, 20 identifiers could be selected for a single customer to provision a group of services, but only 15 end up being provisioned. Over time, some previously provisioned services could be deleted. Both of these scenarios will leave available identifiers interspersed among identifiers in use. It is important to be able to make use of these available identifiers because the address space or identifier range is typically finite.
With reference to FIG. 1, system 100 illustrates network management system 101 in communication with a database 103, in a scenario where there are only a few free or available identifiers (IDs) 500 and 1001 left on a moderate target range of 1 to 1024 on the database 103. A prior art process to find an available ID would query each identifier one-by-one and check on each for availability (i.e. not present in database) with an individual query. Thus the process starts with a candidate ID initialized to 0. At step 105 the candidate ID is incremented. At step 107 the database is queried for the individual candidate ID. This can be done with an SQL database query such as:
AUTO_INCREMENTSELECT Object ID FROM Table1 WHERE (ID = 3 ANDNodeID =2.2.2.2)
At step 109 the availability of the candidate is returned to the network management system 101. Using this process it would take 500 queries to the database to find the first available ID (500) and another 521 queries to find the next available ID (1021). Doing multiple database queries is “expensive” in terms of resource usage, and especially so when target ID space is heavily utilized and available IDs are interspersed among IDs in use.
Therefore, an improved method or system for determining available IDs in a database would be highly desirable.